package leetcode; /**
 * description:
 * author:张腾
 * date:2021-06-10
 */

/**
 * 给定一个二叉树，判断它是否是高度平衡的二叉树。
 * * 本题中，一棵高度平衡二叉树定义为：一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
 */
public class leetcode110 {

    public boolean isBalanced(TreeNode root) {

        if (root==null) return true;
        int left = countDepth(root.left);
        int right = countDepth(root.right);

        return Math.abs(right-left)<=1 && isBalanced(root.left) && isBalanced(root.right);
    }

    public int countDepth(TreeNode root){
        if (root==null) return 0;

        return Math.max(countDepth(root.left),countDepth(root.right))+1;
    }

}
